﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BLLTZS;
using BLLTZS.Funcionalidad;
using System.Drawing;

namespace TZS.Ofertas
{
    public partial class Postularme : FormGenerico
    {
        public int IdOferta
        {
            get { return int.Parse(Request.QueryString["id"]); }
        }


        private void CargarOferta()
        {
            TZS_Oferta oferta = new BLLOferta().Traer(IdOferta);

            lblTitulo.Text = oferta.Titulo;
            lblOferente.Text = oferta.TZS_Oferente.Nombre;
        }

        private void MostrarError(string mensaje, bool error)
        {
            SetearVisibilidad(btnConfirmarPostulacion, false);
            SetearVisibilidad(btnCancelarPostulacion, false);
            lblResultadoPostulacion.Text = mensaje;
            SetearVisibilidad(lblResultadoPostulacion, true);

            if(error)
                lblResultadoPostulacion.ForeColor = Color.Red;
            else
                lblResultadoPostulacion.ForeColor = Color.Green;
        }

        private void ValidarPostulacion()
        {
            if (new BLLPostulacion().Existe(IdOferta, User.Identity.Name))
                MostrarError("Ya te postulaste para esta oferta.", true);

            if (new BLLPerfil().PoseeDatosObligatorios(User.Identity.Name))
            {
                SetearVisibilidad(pnlPostularmeComandos, true);
                SetearVisibilidad(pnlAvisoError, false);
            }
            else
            {
                SetearVisibilidad(pnlPostularmeComandos, false);
                SetearVisibilidad(pnlAvisoError, true);
            }
        }


        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                SetearVisibilidad(lblResultadoPostulacion, false);
                CargarOferta();
                ValidarPostulacion();
            }
            catch (Exception ex)
            {
                Response.Redirect("/Default.aspx");
            }
        }

        protected void btnConfirmarPostulacion_Click(object sender, EventArgs e)
        {
            try
            {
                if (new BLLPerfil().PoseeDatosObligatorios(User.Identity.Name))
                {
                    BLLPostulacion bll = new BLLPostulacion();
                    bll.Postular(IdOferta, User.Identity.Name);
                    bll.GuardarCambios();
                    MostrarError("Se ha realizado la postulación con éxito, se contactarán con vos por el e-mail ó teléfono que especificaste.", false);
                }
            }
            catch (Exception ex)
            {
                MostrarError("Ha ocurrido un error al intentar postular, intente nuevamente más tarde", true);  
            }
        }
    }
}